#ifndef __Agenda
#define __Agenda

#include "Contact.h"

#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
#include <string.h>
#include <glib-2.0/glib.h>
#include <assert.h>

struct sAgenda
{
    GList * Contacts;
};
typedef struct sAgenda Agenda;


/** @brief Initialise la liste Agenda*/
void agendaInitialiser(Agenda *pAgenda);

/** @brief Ajoute un contact à la liste Agenda */
void agendaAjouter(Agenda *pAgenda, const Contact* pContact);

/** @brief Recherche et supprime le contact ayant pour nom : Nom */
void agendaSupprimer(Agenda *pAgenda, const char* Nom);

/** @brief Recherche le contact ayant pour nom: Nom*/
Contact* agendaRechercher(const Agenda *pAgenda, const char* Nom);

/** @brief Recherche le contact en ième position*/
Contact *agendaGetContact(const Agenda *pAgenda, int i);

/** @brief Libère la liste Agenda */
void agendaLiberer(Agenda *pAgenda);

/** @brief Renvoie le nombre de contacts de l'Agenda */
int agendaTaille(const Agenda *pAgenda);

/** @brief Ajoute un contact à la liste Agenda en demandant à l'utilisateur de saisir les informations du contact (mode texte) */
void agendaAjouter2(Agenda *pAgenda);

/** @brief Affiche l'agenda Agenda (mode texte) */
void agendaAfficher(const Agenda* pAgenda);

/** @brief Enregistre l'Agenda dans un fichier */
void agendaSauver(const Agenda *pAgenda, const char * nomfichier);

/** @brief Charge l'Agenda en mémoire */
void agendaCharger(Agenda *pAgenda, const char * nomfichier);

/** @brief Test le module agenda */
void testRegressionAgenda();

#endif


